#include<iostream>
#include<string>
#include<cstdio>
// #include<stdio.h>
#include<vector>
#include<cstdlib>
#include<cstring>
using namespace std;
// std::ios::sync_with_stdio(false);

const int MAX_SIZE = 12;

int maze[MAX_SIZE][MAX_SIZE][2];
int ans[MAX_SIZE];


bool IsSequare(int i,int j,int k){
    for(int p=0 ; p<k ; p++){
        if(    maze[i][j+p][0] == 0 
            || maze[i+p][j][1] == 0
            || maze[i+k][j+p][0] == 0
            || maze[i+p][j+k][1] == 0)
            {
                return false;
            }
    }
    return true;
}


int main(){
    // freopen("./out.txt", "w", stdout);

    int n,m,maze_i,maze_j;
    char ch;
    int count = 1;
   
    while(cin >> n >> m){
        // 初始化并读取输入构造矩阵
        memset(maze,0,sizeof(maze));
        memset(ans,0,sizeof(ans));
        bool flag = false; // 是否有

        
        for(int i=0;i<m;i++){
            cin>>ch>>maze_i>>maze_j;
            if(ch == 'H'){
                // 第i行，j到j+1列连线
                maze[maze_i][maze_j][0] = 1;
            } else {
                // 第i列 j到j+1行连线
                maze[maze_j][maze_i][1] = 1;
            }
        }
        // ij0表示第i行第j个点此点往右的横线
        // ij1表示第i行第j个点此点往下的横线

        // 下面便是在这个三维矩阵中进行判断了
        // 现在是按边来存
        for(int i=1;i<n;i++){
            for(int j=1;j<n;j++){
                if(maze[i][j][0] == 1 && maze[i][j][1]==1){
                    // 取到当前所能得到的最大矩形
                    int cur = n-i > n-j ? n-j : n-i;
                    for(int k=1;k<=cur;k++){
                        if(IsSequare(i,j,k)){
                            ans[k]++;
                            flag = true;
                        }
                    }
                }
            }
        }
        if(count > 1){
            cout<<"\n**********************************\n\n";
        }
        cout<<"Problem #"<<count<<endl<<endl;
        if(flag){
            for(int i=1 ; i<n ; i++){
                if(ans[i] != 0){
                    cout<<ans[i]<<" square (s) of size "<<i<<endl;
                }
            }
        } else {
            cout<<"No completed squares can be found.\n";
        }
        count++;
    }
    return 0;
}
